package com.yizhi.student.dao;

import com.yizhi.student.domain.StudentInfoDO;

import java.util.List;
import java.util.Map;

import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;

/**
 * 生基础信息表
 *
 * @author dunhf
 * @email 499345515@qq.com
 * @date 2019-08-01 09:45:46
 */
@Mapper
public interface StudentInfoDao {

    /**
     * 根据id获取学生信息
     *
     * @param id 学生id
     * @return 学生信息
     */
    StudentInfoDO get(Integer id);

    /**
     * 分页展示学生信息，整合了过滤条件
     *
     * @param offset      当前页号
     * @param pageSize    页面大小
     * @param name        学生姓名 模糊匹配
     * @param tocollegeId 大学id 为“”或null则不匹配
     * @param tomajorId   专业id 为“”或null则不匹配
     * @param classId     班级id 为“”或null则不匹配
     * @return 经过过滤后的页面信息
     */
    List<StudentInfoDO> list(Integer offset, Integer pageSize, String name, Integer tocollegeId,
                             Integer tomajorId, Integer classId);

    /**
     * 获取学生数据条数
     *
     * @return int 数据条数
     */
    @Select("SELECT COUNT(*) FROM s_student_info")
    int count();

    /**
     * 新增学生信息
     *
     * @param studentInfo 学生信息
     * @return 更新行数
     */
    int save(StudentInfoDO studentInfo);

    /**
     * 改变学生信息
     *
     * @param studentInfo 改变后的学生信息
     * @return 更新行数
     */
    int update(StudentInfoDO studentInfo);

    /**
     * 根据id移除学生信息
     *
     * @param id 学生id
     * @return 更新行数
     */
    int remove(Integer id);

    /**
     * 批量移除学生信息
     *
     * @param ids 要移除的学生们的id
     * @return 更新行数
     */
    int batchRemove(List<Integer> ids);
}
